# -*- coding：utf-8 -*-
"""
@Time:2024-08-1715:37
@Auth:泛彼泊舟
@File:4、类属性和类方法.py
@IDE:PyCharm
@模块功能：xxx
"""
class Hero:
    # 类中定义的变量就是类属性
    b = 88 # b就是Hero类的属性

    def __init__(self, name, hp, mp=0):
        self.name = name
        self.hp = hp
        self.mp = mp
        self.a = 0

    def attack(self):
        print("英雄发起普通攻击")

    def move(self, x, y):
        print(f"执行移动英雄操作,x坐标为{x},y坐标为{y}")

    def back_city(self):
        print("执行英雄回城操作")

    # 定义类方法：使用装饰器@classmtehod
    @classmethod
    def c(cls): # cls当前类的名字：Hero
        print("释放英雄技能")

    # 在类中除了实例方法和类方法还有另外一种方法叫做静态方法
    @staticmethod
    def d():    # 默认没有参数
        print("给队友发信息")

hero1 = Hero("赵云", 1000, 200)
# 类属性对象和类都能调用
hero1.c()
Hero.c()
Hero.move(2, 3) # 如果类需要调用实例方法必须给一个实例对象

# 静态方法：对象和类都可以调用
hero1.d()
Hero.d()

'''
总结：
函数：
- 定义在模块中具体实现的功能
方法：
- 类中定义的函数就叫做方法，而且有不同的类型方法
- 实例方法：第一个参数一定是self，而且必带，代表对象本身
- 类方法：第一个参数一定是cls，而且必带，代表类本身
- 静态方法：没有必带参数，可以通过对象和类直接调用
- 魔法方法：类中已经定义的方法，以双下划线开头和结尾，不需要手动调用，某种条件下自动化触发
- 参数的使用方法一致
- 可以使用return返回值
'''

